package com.chinairi.mall.service;

import com.chinairi.common.annotation.DoPage;
import com.chinairi.mall.controller.viewobject.*;
import com.chinairi.mall.model.CompShop;
import com.baomidou.mybatisplus.extension.service.IService;
import com.chinairi.mall.model.GoodsInfo;
import com.chinairi.mall.service.modelobject.*;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.web.bind.annotation.GetMapping;

import java.io.IOException;
import java.util.List;

/**
 * <p>
 * 企业店铺表 服务类
 * </p>
 *
 * @author gsl
 * @since 2020-09-06
 */
public interface ICompShopService extends IService<CompShop> {

    /**
     * 新建店铺
     * @param compShop
     */
    void add(CompShop compShop);

    /**
     * 更新店铺信息
     * @param compShop
     */
    void updateShop(CompShop compShop);

    /**
     * 根据用户信息获取用户企业下的某个类别的店铺
     * @param type 前端回传店铺类别
     * @return CompShop
     */
    CompShopVO getAllByType(String type);

    /**
     * 根据店铺类别获取所有的企业的店铺
     * @param compShopMo
     * @return
     */
    List<CompShopMO> getAllShopByType(CompShopMO compShopMo);

    /**
     * 获取所有含四新商品的店铺
     * @param compShopMo
     * @return
     */
    List<CompShopMO> getFourNewShop(CompShopMO compShopMo);

    /**
     * 根据店铺id获取店铺下所有的商品信息，接口中回传店铺id和店铺类型
     * impl中根据类型进入不同的impl方法
     * 用同一个接收体混合抛出。
     *
     * @param compShopMo
     * @return
     */
    List<GoodsAndServiceVO> getAllGoodsByShopId(CompShopMO compShopMo);

    /**
     * 根据店铺id获取店铺下的四新商品信息，接口中回传店铺id
     *
     * @param compShopMo
     * @return
     */
    List<GoodsAndServiceVO> getFourNewGoodsByShopId(CompShopMO compShopMo);

    /**
     * 单个商品审核
     * @param goodsAndServiceVo
     */
    void updateGoodsOrServiceStatus(GoodsAndServiceVO goodsAndServiceVo);

    /**
     * 单个四新商品审核
     * @param goodsAndServiceVo
     */
    void updateFourNewGoodsStatus(GoodsAndServiceVO goodsAndServiceVo);

    /**
     * 审核某个店铺的所有商品
     * @param compShopMo
     */
    void updateGoodsOrServiceStatusByCsDbId(CompShopMO compShopMo);

    /**
     * 审核某个店铺的所有四新商品
     * @param compShopMo
     */
    void updateFourNewGoodsStatusByCsDbId(CompShopMO compShopMo);

    /**
     * 根据店铺id和其他信息搜索店铺的服务归集
     * @param orderCollectionVO
     * @return
     */
    OrderServiceCollectionVO searchShopOrderServiceCollection(OrderCollectionVO orderCollectionVO);

    /**
     * 根据服务订单id获取服务订单下的商品信息
     * @param orderCollectionMO
     */
    OrderServiceGoodsVO getOrderServiceGoodsById(OrderServiceGoodsMO orderCollectionMO);

    List<OrderServicePurchaseMO> searchShopOrderPurchaseCollection(OrderCollectionVO orderCollectionMO);

    List<OrderServiceQualityMO> searchShopOrderQualityCollection(OrderCollectionVO orderCollectionMO);

    List<OrderServiceTransportMO> searchShopOrderTransportCollection(OrderCollectionVO orderCollectionMO);

    List<OrderServiceSettleMO> searchShopOrderSettleCollection(OrderCollectionVO orderCollectionMO);

    List<OrderServiceStorageMO> searchShopOrderStorageCollection(OrderCollectionVO orderCollectionMO);

    /**
     * 店铺拒绝服务订单
     * @param orderCollectionMO
     * @throws IOException
     */
    void refuseOrderService(OrderServiceGoodsMO orderCollectionMO);

    /**
     * 店铺确认服务订单
     * @param orderCollectionMO
     * @throws IOException
     */
     void confirmOrderService(OrderServiceGoodsMO orderCollectionMO);

    /**
     * csShopName  模糊搜索店铺名称
     * csShopType  精确搜索店铺类别
     * @param homeShopMo
     * @return
     */
    List<HomeShopMO> getHomeShop(HomeShopMO homeShopMo);

    /**
     * 店铺管理，获取店铺列表。
     * @param compShopManageMo
     * @return
     */
    List<CompShopManageMO> getAllCompShopManageList(CompShopManageMO compShopManageMo);

    /**
     * 删除店铺
     * @param csDbid
     * @param flag
     */
    void deleteById(String csDbid,String flag);

    /**
     * 获取审核记录
     * @param csDbId
     * @param flag
     * @return
     */
    Object getApproveRecorder(String csDbId, String flag,ApproveSearchVO approveSearchVO);

    /**
     * 获取有审核记录的店铺列表
     * @return
     */
    List<CompShopMO> getApproveShopList(String shopTypeFlag,CompShopMO compShopMO);
}
